home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / patch / sas_cv6.57 / read.me < prev    next >
Text File  |  1996-10-28  |  8KB  |  248 lines

  1. This patch contains a number of bug fixes (listed below),
  2. and few enhancements to the SAS/C Developement System.
  3. This patch will use the original 6.50 disks to perform
  4. the patch. You should have 6.56 installed BEFORE applying
  5. this patch.
  6.  
  7.  
  8.  
  9. To install this patch, type
  10.  
  11.    execute install
  12.  
  13.  
  14.  
  15. Enhancements:
  16.  
  17. 1) CPU=68060 option. This option will tell the compiler to generate
  18.    code optimized for the 68060. Code compiled with this option will
  19.    run on 68020-68060 processors. It is equivalent to the CPU=68040
  20.    option, with a few exceptions:
  21.    
  22.       1) FSCC instruction will not be generated.
  23.  
  24.       2) FINTRZ instruction WILL be used when converting double to 
  25.          ints, instead of a CX math routine.
  26.  
  27.       3) MULS is used for more often for constant multiplies than
  28.          on the 040.
  29.  
  30.    Also, the preprocessor symbol _M68060 will be defined if this option
  31.    is used.
  32.  
  33. 2) The multiply by constant code has been tuned to use MULS when
  34.    it is faster than the shift/add method for 040/060.
  35.  
  36. 3) New 68040 math library. SCM040.LIB contains replacement math 
  37.    routines that do not use any of the floating point instructions 
  38.    that are emulated in software on the 040/060, ie FCOS, FSIN, etc.
  39.    However, timings on a 68040 indicate that this library executes
  40.    slower than the emualted instructions, so SC does not add it
  41.    to the link line. It may still be usefull if you want domain checking.
  42.    To use it, add it to the link line BEFORE SCM881.LIB.
  43.  
  44. 4) Enhanced scheduler should allow more re-ordering of code, and
  45.    potentially better performance on higher processors.
  46.  
  47.  
  48. 5) Some new Global optimizer warnings have been added. Warning 317 for
  49.    example is one that you'll probably notice first. One note about
  50.    the warning: it's not perfect, and will warn in some cases when it
  51.    probably shouldn't. If you don't like it, just add IGNORE 317 to
  52.    your SCOPTIONS.
  53.  
  54. 6) Added support to SLINK so a variable _LibID can be used in place of 
  55.    the LIBID keyword. This allows the _AMIGADATE_ define to be used
  56.    in library version strings.
  57.  
  58. 7) CPR has been updated so it should work fully on a 68060, including
  59.    CyberGuard support.
  60.  
  61.  
  62. Bugs Fixed in 6.57
  63.  
  64.  
  65. 1) CXERR loading A4 in a pragma call in some cases.    More prevalent in 6.56.
  66.                                                        Fixed.
  67.                                                        
  68. 2) Function prolog for __asm function has parms for    Fixed.
  69.    EXG backward if exchanging a data and address reg. 
  70.  
  71. 3) CPR and OMD get enforcer hits dissassemmbling       Fixed.
  72.    $0e7c0ea6.
  73.  
  74. 4) ASM doesn't allow move.w (32323232).l,(1616).w      Fixed.
  75.    etc.
  76.  
  77. 5) OMD doesn't handle HUNK_ABS.                        Fixed.
  78.  
  79. 6) SE has terrible performance when adding a character Fixed.
  80.    to the same line as a marked block.
  81.  
  82. 7) ctime() adds 1 hour for daylight instead of         Fixed.
  83.    subtracting one.
  84.  
  85. 8) CPR will no longer allow single stepping a process Done.
  86.    that has been stopped in a WAIT state
  87.  
  88. 9) Avoid CXERR calling #pragma function but not        Done.
  89.    using advanced addressing mode for loading
  90.    parameters. Peep optimize it anyway.
  91.  
  92. 10) Fix CXERR calling ASM function pointers that       New in 6.56. Fixed.
  93.     return float.
  94.  
  95. 11) The stackextion code was attempting to free        Added in 6.55. Fixed.
  96.     bad memory or the current stack pointer.
  97.  
  98. 12) SE refreshes incorrectly if DEL hit on last        Fixed.
  99.     char and next line is preproc. continuation.
  100.  
  101. 13) Builtin Memset doesn't work for negative chars     Fixed.
  102.     for example '\xb7'
  103.  
  104. 14) fseek could fail in two cases                      Fixed.
  105.       1) O_XLAT mode      
  106.       2) If buffer was in low mem, and a large
  107.          backwards seek happened.
  108.  
  109. 15) Autoincrement on VOLATILE variables could cause    Fixed.
  110.     CXERR.
  111.  
  112. 16) SLINK reported bad line number for some messages.  Fixed.
  113.  
  114. 17) Unsignedness was lost on result of OR during a     Fixed.
  115.     check in an IF statement   
  116.  
  117. 18) CXERR in scgo for exposed temporaries.             Fixed.
  118.  
  119. 19) ASM fails on forward references in DC.B's          Fixed.
  120.  
  121. 20) mktime(), getclk(), and chgclk()                   Fixed.
  122.     calculate leap year wrong at 2000.
  123.  
  124. 21) fwrite(), fputc() can't write to "r+" file         Fixed.
  125.     after a read, without fflush()
  126.  
  127. 22) Enforcer hit and extra MOVE's (possibly bad)       Fix for 6.55 wasn't correct.
  128.     for tail recursion if doubles used.                Fixed.
  129.  
  130. 23) Debug info offsets needed to be adjusted for       Fixed.
  131.     static BSS items if COMMON was on.
  132.  
  133. 24) Struct copies from constant address 0 generated    Fixed.
  134.     bad code.  
  135.  
  136. 25) Scheduler was to conservative with condition codes Improved.
  137.  
  138. 26) Crossjump optimization did not examine CC's        Fixed.
  139.     properly, causing reads of uninit memory and 
  140.     potentially bad code.
  141.  
  142. 27) Increased STRING size for macro arguments in ASM.  Done.
  143.  
  144. 28) ASM was missing CMP.B (An)+,(Am)+                  Fixed.
  145.  
  146. 29) Make message 63 a warning for duplicate structs    Fixed.
  147.     defs when possible.
  148.  
  149. 30) SMAKE did not set up it's CommandName and SetName  Fixed.
  150.     field in the CLI structure properly.
  151.  
  152. 31) Removed use of CMPI to nullify next instruction    Done.
  153.     (if it's BCC or BSR) because it causes a buserror 
  154.     on the 060, which will either cause a crash, or 
  155.     slower code.
  156.  
  157. 32) SE didn't update colors properly on BLOCK INSERT   Fixed.
  158.     or BLOCK READ.
  159.  
  160. 33) Compiler went into infinite loop on CTRL-Z.        Attempt to handle CTRL-Z
  161.                                                        in 6.55 was incorrect. Fixed.
  162.  
  163. 34) Fixed pcrel reference of form [foo,pc] in ASM      Fixed.
  164.  
  165. 35) Allow FP reg list to be in decending order, ie     Fixed.
  166.     FP7-FP1. (Also fixed OMD to disassemble this).
  167.     
  168. 36) Phase 2 was not respecting the volatile keyword    Fixed.
  169.     for indirect acceses.
  170.  
  171. 37) Fix C++ tellg(), streampos->int conversion.        Fixed.
  172.  
  173. 38) gcount isn't implemented in C++ library.           Fixed.
  174.  
  175. 39) SLINK could leave temporary files in t: if         Fixed.
  176.     interrupted with CTRL-C. 
  177.  
  178. 40) OMD would crash if more than 32 sections were      Fixed.
  179.     found in .o file. Fixed crash and bumped limit
  180.     to 64.
  181.  
  182. 41) timedelay() function in SC.LIB was incorrect.      Fixed.
  183.  
  184. 42) Sparse case switch could use an inappropriate      Fixed.
  185.     register in rare cases.
  186.     
  187. 43) GENPROTO could get enforcer hits for cases like    Fixed.
  188.     void test(char *test){}
  189.  
  190. 44) Fixed problem with LISTSYM in CPR giving up too    Fixed.
  191.     soon.
  192.  
  193. 45) Fixed debug generation problem with GST's and      Fixed.
  194.     typedefs for function returns.
  195.  
  196. 46) Added 'AFF_68060' #define.                         Done.
  197.  
  198. 47) Crossjump optimization (in peephole opt) was       Fixed.
  199.     done improperly if opt covered 32-bit references
  200.     (CODE=FAR) to local functions. 
  201.  
  202. 48) Generate the default LIBID string from LIBVERSION/ Done.
  203.     LIBREVISION, so the version command works on 
  204.     libraries that are not loaded into memory.
  205.  
  206. 49) Fix %n if a space preceeds it, and EOS/EOF is      Fixed.
  207.     deteceted, ie "%s %n".
  208.     
  209.  
  210. 50) SLINK would crash if an OML-style library          Fixed.
  211.     contained a module that had more than 256 symbol
  212.     definitions.
  213.     
  214.     
  215. 51) ASM would generate an improper floating point      Fixed.
  216.     number for negation, ie fmove.d  #-3.1,fp0.
  217.     Also give errors for other operations on fp 
  218.     numbers that ASM doesn't support, ie #3.1*2
  219.  
  220. 52) In rare situations, sc2 would not properly         Fixed.
  221.     reassign offsets to auto variables if OPT
  222.     was on.
  223.  
  224. 53) Allow auto initializers of string constants        Fixed.
  225.     where the null character exceeds the size
  226.     if the array, is char a[2] = "ab";
  227.  
  228.  
  229.  
  230.     
  231. Bugs NOT fixed in 6.57.
  232.  
  233.  
  234. 1) ASM doesn't report illegal addressing mode for
  235.    PC-rel mode for CMPI.
  236.  
  237. 2) sekeymap doesn't handle escaped quotes properly.
  238.  
  239. 3) Make __open() look at protection bits before 
  240.     calling Open to prevent fopen(, "a") on readonly
  241.     file.
  242.  
  243. 4) const in union generates improper warning.
  244.  
  245. 5) Type of 'sizeof' is unsigned int. With the SHORTINT
  246.    option, bad results are returned for cases like
  247.    char a[70000]; x = sizeof(a);
  248.